<?php
/**
 * Контроллер тегов
 * 
 * Управление тегами
 * @author Anton Zavidov
 * @package myLiveShop
 */

/**
 * Класс контроллера для управления тегами
 *
 */
class ControllerTag extends Element{
	/**
	 * Констуктор
	 *
	 * @param string $className имя контроллера
	 */
	public function __construct($className=null){
		$this->name='tag';
		parent::__construct($className?$className:__CLASS__);
	}
	/**
	 * Просмотр елемента
	 *
	 */
	public function show($page=1){
		parent::show();
		$this->view->set(
			'list',
			$this->model()->load(
				false,
				array(
					ModelTag::F_TAG_ID,
					ModelTag::F_TITLE
				),
				$page===false?null:array(
					'pagination'=>array(
						'page'=>$page,
						'show'=>true
					)
				)
			)
		);
		$this->view->set('pagination',$this->model()->pagination);
        $this->build();
	}
	/**
	 * Просмотр елемента
	 *
	 */
	public function display(){
		parent::display(true);
		pr($this->model()->loadOne($this->id));
	}
	/**
	 * Форма редактирования
	 *
	 */
	public function edit(){
		parent::edit(true);
		Core::mustLogin();
		$this->view->set('element',$this->model()->loadOne($this->id,array(ModelTag::F_TAG_ID,ModelTag::F_TITLE)));
		$this->build();
	}
	/**
	 * Форма создания
	 *
	 */
	public function add(){
		parent::add();
		Core::mustLogin();
		$this->build();
	}
	/**
	 * Создание
	 *
	 */
	public function save(){
		parent::save();
		Core::mustLogin();
		$result=$this->model()->save(
			array(
				ModelTag::F_TITLE=>Request::getString(ModelTag::F_TITLE),
				ModelTag::F_USER_ID=>Core::user()
			),
			Request::getInt(ModelTag::F_TAG_ID,null,'post')
		);
		if(!is_array($result)){
			Core::eraseRequest();
			Core::redirect(base64_decode(Request::getString(Core::REFERER)),T::_('Saved'));
		}
		else {
			Core::setFormErrors($result);
			Core::saveReferer();
			Core::saveRequest();
			Core::redirect(Core::getReferer(true),T::_('Error'));
		}
	}
	/**
	 * Удаление
	 *
	 */
	public function delete(){
		Core::mustLogin();
		parent::delete(true);
		Core::redirect(base64_decode(Vars::_(Core::REFERER)),T::_('Deleted'));
	}
}